19 sierpnia, 2019

Zadanie

  • Naszym zadaniem jest klasyfikacja do 5 kategorii, tekstów pochodzących od BBC
## # A tibble: 5 x 3
## # Groups:   category [5]
##    name category     text                                                  
##   <int> <chr>        <chr>                                                 
## 1   136 business     "Ukraine revisits state sell-offs\n\nUkraine is prepa…
## 2   144 entertainme… "Eminem beats Elvis to number one\n\nRapper Eminem ha…
## 3   239 politics     "Row over 'police' power for CSOs\n\nThe Police Feder…
## 4   465 sport        "Henin-Hardenne beaten on comeback\n\nJustine Henin-H…
## 5    81 tech         "Savvy searchers fail to spot ads\n\nInternet search …

Kategorie

Preprocessing

Na wstępie robimy preprocessing:

  • Usuwam num_pattern (jeden lub wiecej)
  • Usuwam antiwords
  • to_lower_case
  • Usuwam znaki specjalne
  • Zostawiam tylko słowa o długości conajmniej 2

Funkcja ta oddzielnie traktuje main i header.

Długość artykułów

Embedding

By nie uczyć od podstaw reprezentaji wektorowej tokenów, będę korzystał z embeddingu Glove.

"GloVe: Global Vectors for Word Representation",
Jeffrey Pennington, Richard Socher, and Christopher D. Manning. 2014

Jako że a priori wydaje się że embedding nauczony reprezentacji na wikipedii będzie najbardziej zbliżony do analizowanych artykułów, zdecydowałem się na:

  • Wikipedia 2014 + Gigaword 5 (6B tokens, 400K vocab, uncased, 50d, 100d, 200d, & 300d vectors, 822 MB download)

Z czego testowałem 50, 100 i 300 wymiarowe embeddingi.

By przedstawić w formie wizualnej wektory słów korzystam z techniki redukcji wymiarów t-SNE

SNE (Stochastic Neighbor Embedding)

"Visualizing Data using t-SNE",
Laurens van der Maaten, Geoffrey Hinton, Journal of Machine Learning Research 9 (2008) 2579-2605

Po krótce opiszę jego działanie.

\[HIGH \ DIM \ P(x_j|x_i) = \frac{exp(-||x_i - x_j||^2 / 2\sigma_i^2)}{\sum_{k\neq i} exp(-||x_i - x_k||^2 / 2\sigma_i^2)} \\ LOW \ DIM \ Q(x_j|x_i) = \frac{exp(-||y_i - y_j||^2 )}{\sum_{k\neq i} exp(-||y_i - y_k||^2 )} \ , \ gdzie \ var = \frac{1}{\sqrt{2}} \]

Mając \(P\) i \(Q\) liczymy dywergencję Kullback-Leibler

\[COST = \sum_i KL(P_i, Q_i) = \sum_i \sum_j P(j|i) \times log(\frac{P(j|i)}{Q(j|i)})\]

Wariancja \(\sigma_i\) rozkładu gaussowskiego o średniej \(x_i\) dla każdego wielowymiarowego wektora jest związana z hiperparametrem perplexity. Wybór \(\sigma_i\) indukuje rozkład prawdopodobieństwa \(P_i\) dla wszystkich punktów, z entropią układu monotonicznie rosnącą wraz z rosnącym \(\sigma_i\).

\[Perp(P_i) = 2^{H(P_i)} = 2^{- \sum_j P(j|i) \times log_2(P(j|i))}\]

Autor poleca \(Perp \in [5,50]\)

t-SNE różni się od SNE wykorzystaniem rozkładu Cauchy zamiast Gaussa.

\[LOW \ DIM \ Q(x_j|x_i) = \frac{exp(-||y_i - y_j||^2 )}{\sum_{k\neq i} exp(-||y_i - y_k||^2 )} \ \rightarrow \ \frac{(1 + ||y_i - y_j||)^{-1}}{\sum_{k\neq i}(1 + ||y_k-y_j||)^{-1}}\]

Prawo Zipf'a

Heurystyczne Prawo Zipf'a stanowi iż częstotliwość występowania danego słowa jest odwrotnie proporcjonalna do jego rangi

\[freq \sim \frac{1}{rank}\]

\[tf(slowo, artykul) = \frac{n_{slowa \ w \ artykule}}{\sum n_{ liczby\ wystapien\ wszystkich \ slow\ \ w \ artukule}} \\ idf(slowo) = ln(\frac{n_{artykulow \ w \ korpusie}}{n_{artykulow \ zawierajacych \ slowo}}) \]

Embedding visualization

Korzystając z 300-d embeddingu glove, tworzę tf-idf, wybieram top \(n\) per category, jeśli słowo jest w wiecej niż 1 kategorii wybieram jeden rekord o wyższym tf-idf.

Model

By dokonać klasyfikacji używam rekurencyjnej sieci neuronowej o następującej architekturze:

Trening

Confusion Matrix (Validation set)

Obserwacje źle sklasyfikowane na zbiorze walidacyjnnym

## # A tibble: 6 x 4
##      id predicted true       V1                                            
##   <int> <chr>     <chr>      <chr>                                         
## 1    19 tech      business   firm, online, games, news, entertainment, wir…
## 2    21 tech      business   interactive, tv, said, uplift, fraud, uk, sin…
## 3    22 tech      business   desk, extensive, storage, combine, tub, chair…
## 4    73 business  entertain… sequel, made, bn, m, worldwide, now, spider, …
## 5    82 business  politics   got, segregated, employment, old, fashioned, …
## 6    92 business  politics   said, mr, brown, also, pensioners, payments, …

Performace on test set

To do

  • Oddzielny input z nagłówków
  • Zbudowanie meta-modelu na predykcji z 5 modeli sieci neuronowej (blending/stack ensemble)
  • Sprawdzenie obserwacji które sprawiają problem przy klasyfikacji - feature engineering
  • 5 - krotny test set wraz z 5 - krotną tokenizacją